package main

//类型组合

type A struct {
}

func (a *A) AFunc() {
	println("a func")
}

func (a *A) Hello() {
	println("a hello")
}

type B struct {
}

func (b *B) BFunc() {
	println("b func")
}

func (b *B) Hello() {
	println("b hello")
}

// C 类型C,组合了类型A和类型B,它可以直接调用A和B中的方法
// 组合不是继承,它没有多态的概念,当调用同名方法时,仍然是调用当前实际类型的方法
type C struct {
	A
	B
}

func (c *C) Hello() {
	println("c hello")
}
